#ifndef MINESTRATEGY_H
#define MINESTRATEGY_H

/**
1 slding window
//只做单笔持仓，符合条件买入，符合条件卖出


第一帧数据
    sw=[d1,d2,d3,d4]  anchor_flag current_flag

    买入规则：如果第四分钟开盘价大于第一分钟收盘价并且第四分钟成交量大于第一分钟成交量则买入,更新滑动窗口数据
    等待规则：若不符合上述条件，则进行等待，更新滑动窗口数据

    if(sw[4].open>sw[1].close&&sw[4].volume>sw[1].volume)
        buy price:sw[4].open*100  //买入一手
        anchor_flag=sw[1]
        update sw    //删除数组第一个数据

    else
        stay
        update sw  //删除第一个数据

第二帧数据

    //添加当前数据
    sw=[d2,d3,d4,d5]

    卖出规则：如果当前数据大于上一帧数据一定比例，则卖出，否则等待


*/

#include <deque>
#include <vector>
#include "strategy.h"


class MineStrategy:public Strategy
{
public:
    MineStrategy();
    void onCandle(const CandleData& candle) override ;
    void setData(const CandleData*candle);
protected:
    // 买入操作
    void buy(const CandleData& candle, double amount)override;

    // 卖出操作
    void sell(const CandleData& candle, double amount = -1)override;

private:
    //QVector<double> m_prices;
    std::deque<CandleData>m_data;//存储两帧数据
    std::deque<double> m_price;  //存储四个价格

};

#endif // MINESTRATEGY_H
